package main

import (
	"github.com/go-playground/locales/zh"
	ut "github.com/go-playground/universal-translator"
	"github.com/go-playground/validator/v10"
	"github.com/kataras/iris/v12"
	zh_translations "github.com/go-playground/validator/v10/translations/zh"
	"huanteng/test"
)





func main() {


//	app:=iris.New()
	app := iris.Default()
	zh_ch:=zh.New()
	uni := ut.New(zh_ch)               // 万能翻译器，保存所有的语言环境和翻译数据
	Trans, _ := uni.GetTranslator("zh") // 翻译器


	Validate:= validator.New()
	_ = zh_translations.RegisterDefaultTranslations(Validate, Trans)
	// 添加额外翻译
	_ = Validate.RegisterTranslation("required", Trans, func(ut ut.Translator) error {
		return ut.Add("required", "{0} 为必填字段!", true)
	}, func(ut ut.Translator, fe validator.FieldError) string {
		t, _ := ut.T("required", fe.Field())
		return t
	})
		app.Validator = validator.New()
	app.RegisterView(iris.HTML("./views", ".html"))
	authorized:=app.Party("/")
	// register our routes.
	app.Get("/", indexHandler)
	app.Any("/test",test.PostUser)
	app.Get("/form", test.ShowFormHtml)
	app.Post("/form/create", test.HandleForm)
	app.Get("/download", download)
	test.JsonRoute(app)
	//app.Favicon("./resources/favicon.ico")
	app.HandleDir("/resources", iris.Dir("./resources"),iris.DirOptions{Attachments:iris.Attachments{Enable:true,NameFunc: func(systemName string) (attachmentName string) {
	 return "caonima"
	}}})



	//test.ProtoRoute(app)
 	authorized.Use(before,after)
 	{
		authorized.Get("/contact", contactHandler)
	}
	//在所有域的路由'处理程序之后。
//	app.Done(after)
	//所有参数都是必需的，众所周知，如果name或int或tail丢失，路由器将触发404。
//	app.Get("/contact", contactHandler)


	app.Run(iris.Addr(":8080"),iris.WithOptimizations)
}

func download(ctx iris.Context)  {
	src := "./resources/assets/main.js"
//	ctx.SendFile(src, "client.zip")
	/*dest := ""

	limit := 0.001 * iris.B
	burst := 0*/
	ctx.ServeFile(src)

//	ctx.SendFileWithRate(src, dest, limit, burst)
}
/*func index(ctx iris.Context)  {
	var person Person
	if err := ctx.ReadBody(&person); err!=nil {
		ctx.StopWithError(iris.StatusBadGateway,err)

		return
	}

	ctx.Application().Logger().Infof("Person: %#+v", person)
	ctx.WriteString("Success")
}*/
func before(ctx iris.Context) {
	ctx.HTML("begin")
	ctx.Next()  //继续下一个handler
	// [...]
}
func after(ctx iris.Context) {
	// [...]
	ctx.HTML("end")
}
func indexHandler(ctx iris.Context) {
	ctx.HTML("<h1>Index</h1>")
	ctx.Next() // 执行通过`Done`注册的“after”处理程序。
}
func contactHandler(ctx iris.Context) {
	// write something to the client as a response.
	ctx.HTML("<h1>Contact</h1>")
	ctx.Next() // 执行通过`Done`注册的“after”处理程序。
}